package com.pet.backend.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.pet.backend.pojo.UserBackend;
import com.pet.backend.pojo.Vo;
import com.pet.backend.service.impl.UserBackendServiceImpl;
import com.pet.backend.service.impl.UserServiceImpl;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.ArrayList;

/**
 * <p>
 * 管理员信息管理
 * </p>
 *
 * @author pet
 * @since 2024-07-13
 */
@CrossOrigin
@RestController
@RequestMapping("/user_backend")
public class UserBackendController {

    @Resource
    private UserBackendServiceImpl userBackendService;

    // 登录
    @PostMapping("/login")
    public Vo<UserBackend> login(@RequestBody UserBackend userBackend) {
        LambdaQueryWrapper<UserBackend> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(StringUtils.isNotBlank(userBackend.getAccount()), UserBackend::getAccount, userBackend.getAccount());
        wrapper.eq(StringUtils.isNotBlank(userBackend.getPassword()), UserBackend::getPassword, userBackend.getPassword());
        UserBackend one = userBackendService.getOne(wrapper);
        if (one == null) {
            return new Vo<UserBackend>(false, "账号或者密码错误！");
        }
        return new Vo<UserBackend>(one.getId() + "", true);
    }

    // 注册
    @PostMapping("/register")
    private Vo<UserBackend> register(@RequestBody UserBackend userBackend) {
        LambdaQueryWrapper<UserBackend> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(StringUtils.isNotBlank(userBackend.getAccount()), UserBackend::getAccount, userBackend.getAccount());
        UserBackend backend = userBackendService.getOne(wrapper);
        //判断这个账号是否已经注册，如果已经被注册，那就不允许注册
        if (backend == null) {
            boolean b = userBackendService.save(userBackend);
            if (b) {
                return new Vo<UserBackend>(b, "注册成功，请进行登录！");
            } else {
                return new Vo<UserBackend>(b, "注册失败，请稍后重试！");
            }
        } else {
            // 这里表示已经注册了
            return new Vo<UserBackend>(false, "该用户已经存在!");
        }
    }

    // 修改密码
    @PostMapping("/updatePassword")
    private Vo<UserBackend> updatePassword(@RequestBody UserBackend userBackend) {
        UpdateWrapper<UserBackend> wrapper = new UpdateWrapper<>();
        wrapper.eq("id", userBackend.getId());
        wrapper.eq(StringUtils.isNotBlank(userBackend.getAccount()), "account", userBackend.getAccount());
        // 这里是暂时使用name来存储旧的密码，用于做判断
        wrapper.eq(StringUtils.isNotBlank(userBackend.getName()), "password", userBackend.getName());
        // 需要设置的新密码
        wrapper.set("password", userBackend.getPassword());
        boolean b = userBackendService.update(wrapper);
        if (b) {
            return new Vo<UserBackend>(b, "修改成功，请重新进行登录");
        } else {
            return new Vo<UserBackend>(b, "修改失败，请稍后重试！");
        }
    }

    // 查看单个用户
    @GetMapping("/queryUser/{id}")
    public Vo<UserBackend> queryUser(@PathVariable("id") String id) {
        UserBackend userBackend = userBackendService.getById(id);
        return new Vo<UserBackend>(userBackend);
    }

    // 修改信息
    @PostMapping("updateInfo")
    public Vo<UserBackend> updateInfo(@RequestBody UserBackend userBackend) {
        boolean b = userBackendService.updateById(userBackend);
        if (b) {
            // 修改成功，进行返回
            return new Vo<>(b,"更新成功！");
        } else {
            return new Vo<>(b, "更新信息失败，请稍后重试！");
        }
    }

}
